client-server waterfall